import {createRouter, createWebHistory} from "vue-router";
import {Toast} from 'vant';
const routes = [
    /*  {
        path: '/',//访问不带任何路径重定向跳转到指定路由地址 eg：localhost:8080 就会重定向到home页面
        redirect: '/Home' // 重定向
      },*/
    {
        //vue2 使用* vue3 使用/:pathMatch(.*)或者/:catchAll(.*)
        path: '/:pathMatch(.*)',//让任何请求都重定向到login页面
        // eg component: () => import('../views/login/index'), 可以省写为 component: () => import('../views/login'),
        redirect: '/login' // 重定向
    },
    {
        path: "/error",
        name: "error",
        // component: login,
        component: () => import('../views/error'),
        meta: {
            title: '您的访问出错了！',
            showTabbar:false
        }
    },
    {
        path: "/login",
        name: "login",
        // component: login,
        component: () => import('../views/login'),//每个路由这里可以不写index.js,因为vue会默认加上index.js
        meta: {
            title: '登录',//meta是一个object对象，可存自定义任何属性，可在路由前值守卫打印to查看
            showTabbar:false
        }
    },
    {
        path: "/todayProfit",
        name: "todayProfit",
        component: () => import('../views/todayProfit'),
        meta: {
            title: '今日收益',
            showTabbar:true
        }
    },
    {
        path: "/woolConfiguration",
        name: "woolConfiguration",
        component: () => import('../views/woolConfiguration'),
        meta: {
            title: '羊毛配置',
            showTabbar:true
        }
    },
    {
        path: "/taskConfig",
        name: "taskConfig",
        component: () => import('../views/taskConfig'),
        meta: {
            title: '任务配置',
            showTabbar:true
        }
    },
    {
        path: "/myInfo",
        name: "myInfo",
        component: () => import('../views/myInfo'),
        meta: {
            title: '我的信息',
            showTabbar:true
        }
    },
    {
        path: "/jiuZhang",
        name: "jiuZhang",
        component: () => import('../views/jiuZhang'),
        meta: {
            title: '九章头条',
            showTabbar:true
        }
    },
    {
        path: "/chinaUnicom",
        name: "chinaUnicom",
        component: () => import('../views/chinaUnicom'),
        meta: {
            title: '中国联通',
            showTabbar:true
        }
    },
];

//设置当前路由跳转可以通过路由路径path跳转，或者将路由名称通过拼接'/'赋值给路由路径,
routes.forEach(route => {
    route.path = route.path || '/' + (route.name || '');
})

//创建vue-router实例
const router = createRouter({
    history: createWebHistory(process.env.BASE_URL),//历史路由
    routes,
});

// 路由前置守卫 每次跳转路由都会进入此方法
router.beforeEach((to, from, next) => {
//修改顶部浏览器标题，跳转路由时就修改
    const title = to.meta && to.meta.title
    if (title) {
        document.title = title;
    }
    let token = localStorage.getItem("token");
    if (to.path != '/login') {
        // 此时必须要有token
        if (token) {
            next(); // next()去到to所对应的路由界面
        } else {
            //弹出个消息
            Toast('请先登录');
            // 定时器
            setTimeout(() => {
                next({path:'/login'}); // 强制去到"/user"所对应的路由界面
            }, 1000);
        }
    } else {
        // 去登录页面，则直接通过守卫，去到to所对应的路由界面
        next()
    }
})

// 该段代码不需要记，理解即可
// 在vue-router在3.1.0版本之后，push和replace方法会返回一个promise对象，如果跳转到相同的路由，就报promise uncaught异常
/*const originalPush = createRouter.prototype.push;
createRouter.prototype.push = function push(location) {
  return originalPush.call(this, location).catch((err) => err);
};*/

export default router;
